{{- $page := .page }}
{{- if and (not $page) .context }}
  {{- $page = .context }}
  {{- $filepath := "[virtual file]" }}{{ with and $page $page.File $page.File.Filename }}{{ $filepath = . }}{{ end }}
  {{- warnf "%q: DEPRECATED parameter 'context' for shortcode 'button' found, use 'page' instead; see https://mcshelby.github.io/hugo-theme-relearn/introduction/releasenotes/5/#5-18-0" $filepath }}
{{- end }}
{{- $color := .color | default "" }}
{{- $content := .content }}
{{- $href := (trim .href " ") | default "" }}
{{- $style := .style | default "default" }}
{{- if and (not $color) (eq (len $color) 0) }}
  {{- $style = .style | default "transparent" }}
{{- end }}
{{- $attributes := .attributes | default dict }}
{{- $type := .type | default "" }}
{{- $isButton := false }}
{{- $isLink := false }}
{{- if or $type (strings.HasPrefix $href "javascript:") }}
  {{- $isButton = true }}
  {{- $href = substr $href (len "javascript:") }}
  {{- if not $type }}
    {{- $type = "button" }}
  {{- end }}
{{- else if not $href }}
{{- else }}
  {{- $isLink = true }}
  {{- $u := urls.Parse .href }}
  {{- if $u.IsAbs }}
    {{- partialCached "_relearn/urlExists.gotmpl" (dict "url" .href "page" $page "type" "link") $u.String }}
  {{- else }}
    {{- $linkObject := partial "_relearn/linkObject.gotmpl" (dict "url" .href "page" $page) }}
    {{- if $linkObject }}
      {{- $href = partial "_relearn/decoratedLink.gotmpl" (dict "url" .href "page" $page "linkObject" $linkObject "param" "link") }}
    {{- else }}
      {{- $filepath := "[virtual file]" }}{{ with and $page $page.File $page.File.Filename }}{{ $filepath = . }}{{ end }}
      {{- $msg := printf "%q: link '%s' is not a page or a resource" $filepath .href }}
      {{- partial "_relearn/urlErrorReport.gotmpl" (dict "url" .href "page" $page "param" "link" "msg" $msg) }}
    {{- end }}
  {{- end }}
  {{- if and (isset . "target") (or (ne (printf "%T" .target) "string") (ne (trim .target " " ) "")) }}
    {{- $filepath := "[virtual file]" }}{{ with and $page $page.File $page.File.Filename }}{{ $filepath = . }}{{ end }}
    {{- warnf "%q: DEPRECATED parameter 'target' for shortcode 'button' found, use link effects instead; see https://mcshelby.github.io/hugo-theme-relearn/introduction/releasenotes/7/#7-4-0" $filepath }}
  {{- end }}
  {{- $attributes = merge $attributes (partial "_relearn/linkAttributes.gotmpl" (dict "url" $href "page" $page "target" .target)) -}}
{{- end }}
{{- $boxStyle := partial "_relearn/boxStyle.gotmpl" (dict "style" $style "title" (or .title $content) "icon" .icon) }}
{{- if and (not $boxStyle.style) (not $color) }}
  {{- $color = $style }}
  {{- $style = "" }}
{{- end }}
{{- $title := trim ($boxStyle.title) " " }}
{{- $icon := trim ($boxStyle.icon) " " }}
{{- if and $icon (not (findRE ".*?\\bfa-\\w.*?" $icon)) }}
  {{- $icon = printf "fa-fw fas fa-%s" $icon }}
{{- end }}
{{- $iconposition := .iconposition | default "left" }}
{{- with $page -}}
<span class="btn{{ if or $isButton $isLink }} interactive {{ end }} cstyle{{ if $style }} {{ $style }}{{ end }}"{{ with $color }} style="--VARIABLE-BOX-color: {{ . }};"{{ end }}>
  {{- if $isButton -}}
  <button onclick="{{ $href | safeJS }}"{{ if gt (len $type) 0 }} type="{{ $type }}"{{ end }}>
  {{- else if $isLink -}}
  <a
    {{- range $k, $v := $attributes }}
      {{- if $v }}
        {{- if eq (printf "%T" $v) "bool" }}
          {{- printf " %s" $k | safeHTMLAttr }}
        {{- else }}
          {{- printf " %s=%q" $k $v | safeHTMLAttr }}
        {{- end }}
      {{- end }}
    {{- end }}>
  {{- else -}}
  <span>
  {{- end }}
  {{- if and $icon (eq $iconposition "left") }}<i class="{{ $icon }}"></i>{{ end }}
  {{- if and $icon (eq $iconposition "left") $title }} {{ end }}
  {{- if $title }}<span class="title">{{- $title | safeHTML }}</span>{{ end }}
  {{- if and $icon (eq $iconposition "right") $title }} {{ end }}
  {{- if and $icon (eq $iconposition "right") }}<i class="{{ $icon }}"></i>{{ end }}
  {{- if $isButton -}}
  </button>
  {{- else if $isLink -}}
  </a>
  {{- else -}}
  </span>
  {{- end -}}
</span>
{{- end }}